const { HealthKnowledge } = require('../models');
const { Op } = require('sequelize');

// 获取健康知识文章列表
exports.getArticles = async (req, res) => {
  try {
    const { category, search } = req.query;
    
    // 构建查询条件
    const whereClause = {
      status: 'published'
    };
    
    // 如果有分类过滤
    if (category && category !== 'all') {
      whereClause.category = category;
    }
    
    // 如果有搜索关键词
    if (search) {
      whereClause[Op.or] = [
        { title: { [Op.like]: `%${search}%` } },
        { summary: { [Op.like]: `%${search}%` } },
        { content: { [Op.like]: `%${search}%` } }
      ];
    }
    
    const articles = await HealthKnowledge.findAll({
      where: whereClause,
      order: [['publish_time', 'DESC']],
      attributes: [
        'id', 'title', 'summary', 'category', 
        'cover_image', 'view_count', 'like_count', 
        'publish_time', 'author', 'tags'
      ]
    });
    
    // 格式化返回数据
    const formattedArticles = articles.map(article => ({
      id: article.id,
      title: article.title,
      summary: article.summary || article.content.substring(0, 100) + '...',
      category: article.category,
      coverImage: article.cover_image || '/static/images/default-cover.jpg',
      viewCount: article.view_count,
      likeCount: article.like_count,
      publishDate: new Date(article.publish_time).toLocaleDateString('zh-CN'),
      author: article.author || '健康管家',
      tags: article.tags ? article.tags.split(',') : []
    }));
    
    return res.json({
      success: true,
      message: '获取健康知识文章成功',
      data: {
        articles: formattedArticles
      }
    });
  } catch (error) {
    console.error('获取健康知识文章失败:', error);
    return res.status(500).json({
      success: false,
      message: '服务器错误，获取健康知识文章失败'
    });
  }
};

// 获取单篇文章详情
exports.getArticleById = async (req, res) => {
  try {
    const { id } = req.params;
    
    const article = await HealthKnowledge.findByPk(id);
    
    if (!article) {
      return res.status(404).json({
        success: false,
        message: '文章不存在'
      });
    }
    
    // 增加浏览次数
    await article.update({
      view_count: article.view_count + 1
    });
    
    // 格式化返回数据
    const formattedArticle = {
      id: article.id,
      title: article.title,
      content: article.content,
      summary: article.summary,
      category: article.category,
      coverImage: article.cover_image || '/static/images/default-cover.jpg',
      viewCount: article.view_count,
      likeCount: article.like_count,
      publishDate: new Date(article.publish_time).toLocaleDateString('zh-CN'),
      author: article.author || '健康管家',
      source: article.source,
      tags: article.tags ? article.tags.split(',') : []
    };
    
    return res.json({
      success: true,
      message: '获取文章详情成功',
      data: {
        article: formattedArticle
      }
    });
  } catch (error) {
    console.error('获取文章详情失败:', error);
    return res.status(500).json({
      success: false,
      message: '服务器错误，获取文章详情失败'
    });
  }
};

// 点赞文章
exports.likeArticle = async (req, res) => {
  try {
    const { id } = req.params;
    
    const article = await HealthKnowledge.findByPk(id);
    
    if (!article) {
      return res.status(404).json({
        success: false,
        message: '文章不存在'
      });
    }
    
    // 增加点赞次数
    await article.update({
      like_count: article.like_count + 1
    });
    
    return res.json({
      success: true,
      message: '点赞成功',
      data: {
        likeCount: article.like_count + 1
      }
    });
  } catch (error) {
    console.error('点赞失败:', error);
    return res.status(500).json({
      success: false,
      message: '服务器错误，点赞失败'
    });
  }
};

// 添加示例文章（仅用于开发测试）
exports.addSampleArticles = async (req, res) => {
  try {
    // 示例文章数据
    const sampleArticles = [
      {
        title: '每日饮水量对健康的影响',
        content: `<p>水是人体必不可少的物质，占人体重量的60-70%。充足的水分摄入对维持身体功能至关重要。</p>
                 <p>研究表明，成年人每天应该饮用约2升水，相当于8杯250毫升的水。但这个数字会因个人情况而异，比如体重、活动量和气候条件等。</p>
                 <p>适当的水分摄入有以下好处：</p>
                 <ul>
                   <li>帮助排出体内废物</li>
                   <li>调节体温</li>
                   <li>润滑关节</li>
                   <li>保护敏感组织</li>
                   <li>预防便秘</li>
                   <li>改善皮肤状况</li>
                 </ul>
                 <p>脱水会导致疲劳、头痛、注意力不集中等问题。严重脱水甚至会危及生命。</p>
                 <p>如何确保足够的水分摄入：</p>
                 <ol>
                   <li>随身携带水杯</li>
                   <li>设置饮水提醒</li>
                   <li>在每餐食用前喝一杯水</li>
                   <li>增加富含水分的食物摄入，如水果和蔬菜</li>
                 </ol>`,
        category: 'diet',
        tags: '水分,饮水,健康生活',
        cover_image: 'https://placehold.co/600x400/9ee/fff?text=Hydration',
        author: '张医生',
        source: '健康生活杂志',
        summary: '了解每日适当的饮水量对健康的重要性，以及如何确保充足的水分摄入。',
        status: 'published'
      },
      {
        title: '简单居家运动指南',
        content: `<p>不需要昂贵的健身房会员，在家也能进行有效的锻炼。居家运动既方便又节省时间。</p>
                 <p>以下是一些简单易行的居家运动方式：</p>
                 <h3>1. 徒手健身</h3>
                 <p>俯卧撑、深蹲、平板支撑等徒手练习可以锻炼全身肌肉，无需任何器材。</p>
                 <h3>2. 跳绳</h3>
                 <p>跳绳是一种高效的有氧运动，15分钟跳绳可以消耗约200-300卡路里。</p>
                 <h3>3. 瑜伽</h3>
                 <p>瑜伽不仅可以增强柔韧性和肌肉力量，还能减轻压力，改善心理健康。</p>
                 <h3>4. 爬楼梯</h3>
                 <p>如果你住在公寓楼里，爬楼梯是一种简单有效的锻炼方式。</p>
                 <p>每周至少进行150分钟中等强度的有氧运动，以保持身体健康。记住，坚持才是最重要的。即使每天只锻炼10-15分钟，长期坚持也会带来显著的健康益处。</p>`,
        category: 'exercise',
        tags: '居家运动,健身,有氧运动',
        cover_image: 'https://placehold.co/600x400/e9e/fff?text=HomeWorkout',
        author: '李教练',
        source: '健康生活指南',
        summary: '不需要健身房也能保持身体健康，了解简单有效的居家运动方法。',
        status: 'published'
      },
      {
        title: '高血压的预防与管理',
        content: `<p>高血压是一种常见的慢性疾病，也是心脏病和中风的主要风险因素。</p>
                 <p>正常血压应低于120/80 mmHg。血压持续高于140/90 mmHg被诊断为高血压。</p>
                 <p>高血压的风险因素包括：</p>
                 <ul>
                   <li>年龄增长</li>
                   <li>家族史</li>
                   <li>超重或肥胖</li>
                   <li>缺乏运动</li>
                   <li>高盐饮食</li>
                   <li>过量饮酒</li>
                   <li>吸烟</li>
                   <li>压力过大</li>
                 </ul>
                 <p>预防和管理高血压的方法：</p>
                 <ol>
                   <li>定期监测血压</li>
                   <li>保持健康体重</li>
                   <li>限制钠盐摄入（每日不超过5克）</li>
                   <li>增加水果、蔬菜和全谷物的摄入</li>
                   <li>减少饱和脂肪的摄入</li>
                   <li>规律运动（每周至少150分钟中等强度运动）</li>
                   <li>限制酒精摄入</li>
                   <li>戒烟</li>
                   <li>学会管理压力</li>
                   <li>按医嘱服用降压药物</li>
                 </ol>
                 <p>高血压通常没有明显症状，因此被称为"沉默的杀手"。定期检查血压非常重要，尤其是有高血压家族史的人。</p>`,
        category: 'disease',
        tags: '高血压,心脏健康,预防',
        cover_image: 'https://placehold.co/600x400/e99/fff?text=Hypertension',
        author: '王医生',
        source: '心脏健康研究中心',
        summary: '了解高血压的风险因素，以及如何通过生活方式的改变和药物治疗来预防和管理高血压。',
        status: 'published'
      }
    ];
    
    // 批量创建示例文章
    await HealthKnowledge.bulkCreate(sampleArticles);
    
    return res.json({
      success: true,
      message: '添加示例文章成功',
      data: {
        count: sampleArticles.length
      }
    });
  } catch (error) {
    console.error('添加示例文章失败:', error);
    return res.status(500).json({
      success: false,
      message: '服务器错误，添加示例文章失败'
    });
  }
}; 